package cn.hp.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import cn.hp.dao.ProductDao;
import cn.hp.domain.PageBean;
import cn.hp.domain.Product;
import cn.hp.utils.DateToStringUtils;

@Service
@Transactional
public class ProductServiceImpl implements ProductService{
	@Autowired
	private ProductDao productDao;

	
	//查询所有产品信息
	@Override
	public List<Product> findAll() {
		return productDao.findAll();
	}

	//添加产品
	@Override
	public void save(Product product) {
		productDao.save(product);
		
	}
	
	//根据ID查询产品信息
	@Override
	public Product findById(Integer id) {
		 Product product = productDao.findById(id);
		 /*String str = DateToStringUtils.dateToString(product.getDepartureTime());
		 product.setDepartureTimeStr(str);*/
		 return product;
	}
	
	
	//修改产品信息
	@Override
	public void update(Product product) {
		productDao.update(product);
	}
	
	
	
	//删除单个
	@Override
	public void delOne(Integer id) {
		productDao.delOne(id);
	}
	
	//批量删除
	@Override
	public void delMany(Integer[] ids) {
		//判断ids是否为null
		if(ids!=null){
			for (Integer id:ids) {
				productDao.delOne(id);
			}
		}
		
	}
	
	
	//分页全查
	@Override
	public PageBean<Product> findByPage(Integer currPage, Integer pageSize) {
		PageBean<Product> pageBean=new PageBean<>();
		pageBean.setCurrPage(currPage);
		pageBean.setPageSize(pageSize);
		//封装总条数
		Long totalCount=productDao.findCount();
		pageBean.setTotalCount(totalCount);
		pageBean.setTotalPage((int)Math.ceil(totalCount*1.0/pageSize));
		//封装每页查询的数据
		Integer begin=(currPage-1)*pageSize;
		Map<String, Object> map=new HashMap<String, Object>();
		map.put("begin", begin);
		map.put("pageSize", pageSize);
		List<Product> list=productDao.findByPage(map);
		pageBean.setList(list);
		return pageBean;
	}
	
	
	
	//插件分页助手
	@Override
	public PageInfo<Product> findByPageHelper(Integer currPage, Integer pageSize) {
		//设置分页参数
		PageHelper.startPage(currPage, pageSize);
		//查询所有的产品
		List<Product> productList = productDao.findAll();
		//创建PageInfo对象:和PageBean作用是一样的,通过构造函数传入查询的集合对象
		//后面的3代表的是:页面上显示的最大页码
		PageInfo<Product> pageInfo=new PageInfo<>(productList, 3);
		//pagehelper的API  就是他的方法
		System.out.println("当前页"+pageInfo.getPageNum());
		System.out.println("每页查多少"+pageInfo.getPageSize());
		System.out.println("总条数"+pageInfo.getTotal());
		System.out.println("总页数"+pageInfo.getPages());
		System.out.println("没有显示的数据"+pageInfo.getList());
		System.out.println("上一页页码"+pageInfo.getPrePage());
		System.out.println("下一页页码"+pageInfo.getNextPage());
		System.out.println("页面上显示的第一个页码"+pageInfo.getNavigateFirstPage());
		System.out.println("页面上显示的最后一个页码"+pageInfo.getNavigateLastPage());
		return pageInfo;
	}
	
}
